package cn.pn.project.mapper.commodity;

import cn.pn.project.common.Page;
import cn.pn.project.module.commodity.CommodityModule;
import cn.pn.project.pojo.commodity.Commodity;
import cn.pn.project.vo.CommodityVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

@Mapper
public interface CommodityDao {


    /**
     * 根据商品Id查询商品详细信息
     * @param commodityId
     * @return
     */
    CommodityModule findCommodityAllMessage(@Param("commodityId") Integer commodityId);


    /**
     *
     * --------------------这个使用了缓存
     *按城市查询折扣商品
     * 按城市查询折扣商品
     * @param cityMap
     * @return
     * Map集合封装了cityId，pageNo,pageSize
     * 首页加载时候，只显示前六条，点击更多时候，进行分页查询或者只展示前20条或者分页
     */
    public List<Commodity> getDisCommodityListByCityId(Map<String,Object> cityMap);

    /**
     *
     * 按城市查询近期热门
     * 显示前六条
     * 页加载时候，只显示前六条，点击更多时候，进行分页查询或者只展示前20条或者分页
     */
    public List<Commodity> getHotCommodityListByCityId(Map<String,Object> cityMap);


    /**
     * 根据商品Id查询商品场次
     */
    public List<Commodity> getCommodityScheduleByCommodityId(@Param("commodityId")Integer commodityId);

    /**
     * 这里我想是不是应该获取获取含有最低价的场次
     */


   /**
    * 根据当前城市和父级Id获取商品集合，分页显示
    * 个我想暂定为点击更多进行分页查
    * @param one
    * @return
    * Map集合封装了cityId，fatherTypeId，pageNo,pageSize
    */
   public List<Commodity> getCommodityListByCityIdAndFatherTypeId(Map<String,Object> one);


    /**
     * 根据城市Id和父类编号获取商品总数
     * @param fatherTypeId
     * @param cityId
     * @return
     */
    public List<Commodity> getCommodityCountByCityIdAndFatherTypeId(@Param("fatherTypeId")Integer fatherTypeId,@Param("cityId")Integer cityId);


    /**
     * #先暂定按商品名模糊查(后期再es或solr上关联商品名和场馆)，城市Id,父级Id,子类Id,
     * #开始时间，结束时间之间演出的商品---时间通过页面获取当前时间，在获取区间时间
     * #排序方式，综合，1综合排序（没有任何筛选） /2最新优先（按照上架时间排序）  /3低价优先（按照含有的最低价排序）/4好评优先（按照评论星星排序）
     * #排序方式，是否支持在线选座-------    是否可选择座位,  0全部选座方式（默认），1可在线选座
     *
     * #开始时候，使用默认排序方式，查询包括支持选座和不支持全部商品
     * 多条件查询商品集合
     * @param one
     * @return
     */
   public List<Commodity> getCommodityByMoreReason(Map<String,Object> one);
   public List<Commodity> getCountCommodityByMoreReason(Map<String,Object> one);

    /**
     * 根据商品编号和商品状态Id获取商品简单信息
     * @return
     * status 商品状态
     * commodityIds 商品Id的list集合
     */
   public List<CommodityVo> getCommodityByCommodityIdAndCommodityStatus(Map<String,Object> one);


    /**
     * 多条件查询商品对象（谢耀翔）
     * @param param
     * @return
     * @throws Exception
     */
    public Commodity getCommodityByMap(Map<String,Object> param)throws Exception;


    /**
     * -----------cp
     * ---------张夏青用
     * 根据商品Id查询商品信息
     * @param commodityId
     * @return
     */
    public Commodity getCommodityByCommodityId(@Param("commodityId")Integer commodityId);



}
